package IOFlow.practice;

import java.io.*;
//练习一
public class One {
    public static void main(String[] args) throws IOException {
        /**
         * 题目:对文件进行拷贝
         *
         * 需要拷贝文件:C:\Users\35337\Desktop\Temporary\File
         *
         * 拷贝目的地:C:\Users\35337\Desktop\Temporary\dest
         */
        File src=new File("C:\\Users\\35337\\Desktop\\Temporary\\File");

        File dest=new File("C:\\Users\\35337\\Desktop\\Temporary\\dest");
        
        Copy(src,dest);
    }

    private static void Copy(File src, File dest) throws IOException {
        //创建文件
        dest.mkdirs();

        //进入文件
        File[] files=src.listFiles();

        //遍历文件
        for (File file : files) {
            //判断文件 拷贝
            if(file.isFile()){
                FileInputStream fis=new FileInputStream(file);
                //拷贝到dest路径，并获取src的文件或文件夹名字进行创建
                FileOutputStream fos=new FileOutputStream(new File(dest,file.getName()));

                //拷贝长度
                byte[] bytes=new byte[1024];

                int len;
                while ((len=fis.read(bytes))!=-1){
                    //拷贝过程
                    fos.write(bytes,0,len);
                }
                //关流
                fos.close();
                fis.close();
            }else{
                //对文件夹进行递归
                Copy(file,new File(dest,file.getName()));
            }
        }
    }
}
